package com.xinlu.user.action;

import org.apache.commons.lang.StringUtils;

import com.xinlu.common.game.bo.ConstantLstBo;
import com.xinlu.derek.common.BaseAction;
import com.xinlu.derek.common.BaseForm;
import com.xinlu.persistence.Users;
import com.xinlu.persistence.Wzpz;
import com.xinlu.user.bo.UsersBo;
import com.xinlu.user.dao.MD5Util;
import com.xinlu.user.form.ZjhyForm;
import com.xinlu.util.tool.DateUtil;

public class ZjhyAction extends BaseAction {

	private UsersBo usersBo;
	ZjhyForm fr = new ZjhyForm();

	public void setUsersBo(UsersBo usersBo) {
		this.usersBo = usersBo;
	}

	@Override
	public String doExecute() throws Exception {
		return null;
	}

	@Override
	public void formInit() {
	}

	@Override
	public BaseForm getModel() {
		return fr;
	}

	/**
	 * 增加会员
	 * 
	 * @return
	 * @throws Exception
	 */
	public String addUser() throws Exception {

		Users crtUser = (Users) getSession().getAttribute("userinfo");
//		if (crtUser.getAddlim() <= crtUser.getAddnum()) {
//			throw new Exception("当前用户开户数已达上限。");
//		}

		if (1 == fr.getBh1700()) {
			if (ConstantLstBo.getDoubleValue(fr.getRateA1()) > ConstantLstBo.getDoubleValue(crtUser.getRateA1())) {
				throw new Exception("1700模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateA2()) > ConstantLstBo.getDoubleValue(crtUser.getRateA2())) {
				throw new Exception("1700不定位设置出错。");
			}
			if (ConstantLstBo.getDoubleValue(fr.getRateA3()) > ConstantLstBo.getDoubleValue(crtUser.getRateA3())) {
				throw new Exception("1700模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateA4()) > ConstantLstBo.getDoubleValue(crtUser.getRateA4())) {
				throw new Exception("1700不定位设置出错。");
			}
		}
		if (1 == fr.getBh1800()) {
			if (ConstantLstBo.getDoubleValue(fr.getRateB1()) > ConstantLstBo.getDoubleValue(crtUser.getRateB1())) {
				throw new Exception("1800模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateB2()) > ConstantLstBo.getDoubleValue(crtUser.getRateB2())) {
				throw new Exception("1800不定位设置出错。");
			}
			if (ConstantLstBo.getDoubleValue(fr.getRateB3()) > ConstantLstBo.getDoubleValue(crtUser.getRateB3())) {
				throw new Exception("1800模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateB4()) > ConstantLstBo.getDoubleValue(crtUser.getRateB4())) {
				throw new Exception("1800不定位设置出错。");
			}
		}
		if (1 == fr.getBh1900()) {
			if (ConstantLstBo.getDoubleValue(fr.getRateC1()) > ConstantLstBo.getDoubleValue(crtUser.getRateC1())) {
				throw new Exception("1900模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateC2()) > ConstantLstBo.getDoubleValue(crtUser.getRateC2())) {
				throw new Exception("1900不定位设置出错。");
			}
			if (ConstantLstBo.getDoubleValue(fr.getRateC3()) > ConstantLstBo.getDoubleValue(crtUser.getRateC3())) {
				throw new Exception("1900模式统一奖金与返点值设置出错。");
			}

			if (ConstantLstBo.getDoubleValue(fr.getRateC4()) > ConstantLstBo.getDoubleValue(crtUser.getRateC4())) {
				throw new Exception("1900不定位设置出错。");
			}
		}
		if (!(fr.getLimit() >= 0 && fr.getLimit() <= 100000)) {
			throw new Exception("奖金限额出错。");
		}
		
		if(usersBo.existUser(fr.getUsername())){
			throw new Exception("该用户已存在.");
		}

		Users user = new Users();
		user.setDaili(Integer.parseInt(fr.getDaili()));
		user.setUsername(fr.getUsername());
		user.setUserpass(MD5Util.encodePassword(fr.getUserpass()));
		user.setLimit(fr.getLimit());
		user.setMss(StringUtils.join(fr.getMss(), ","));

		if (1 == fr.getBh1700()) {
			user.setRateA1(fr.getRateA1());
			user.setRateA2(fr.getRateA2());
			user.setRateA3(fr.getRateA3());
			user.setRateA4(fr.getRateA4());
		}
		if (1 == fr.getBh1800()) {
			user.setRateB1(fr.getRateB1());
			user.setRateB2(fr.getRateB2());
			user.setRateB3(fr.getRateB3());
			user.setRateB4(fr.getRateB4());
		}
		if (1 == fr.getBh1900()) {
			user.setRateC1(fr.getRateC1());
			user.setRateC2(fr.getRateC2());
			user.setRateC3(fr.getRateC3());
			user.setRateC4(fr.getRateC4());
		}

		user.setAddtime(DateUtil.getCurrentDateTimestamp());
		user.setRegfrom("&" + crtUser.getUsername() + "&" + crtUser.getRegfrom());
		user.setUserpass1(user.getUserpass());
		user.setLock(0);
		user.setState(1);
		user.setIslock(0);
	
		//	Add By Derek on 2011-07-31
		user.setControl(0);
		user.setUermoney(0.0);
		user.setAllmoney(0.0);
		user.setIcemoney(0.0);
		user.setEmailid(0);
		
		usersBo.save(user);

		return "hygl";
	}

	/**
	 * 加载页面
	 * 
	 * @return
	 */
	public String loadPage() {

		Users crtUser = (Users) getSession().getAttribute("userinfo");
		Wzpz wzpz = (Wzpz) getSession().getAttribute("wzpz");
		Double zsszjfd = ConstantLstBo.getDoubleValue(wzpz.getXjbzjsfd());
		fr.setRateA1Fw(ConstantLstBo.getDoubleValue(crtUser.getRateA1()) - zsszjfd);
		fr.setRateA2Fw(ConstantLstBo.getDoubleValue(crtUser.getRateA2()) - zsszjfd);
		fr.setRateA3Fw(ConstantLstBo.getDoubleValue(crtUser.getRateA3()) - zsszjfd);
		fr.setRateA4Fw(ConstantLstBo.getDoubleValue(crtUser.getRateA4()) - zsszjfd);
		fr.setRateB1Fw(ConstantLstBo.getDoubleValue(crtUser.getRateB1()) - zsszjfd);
		fr.setRateB2Fw(ConstantLstBo.getDoubleValue(crtUser.getRateB2()) - zsszjfd);
		fr.setRateB3Fw(ConstantLstBo.getDoubleValue(crtUser.getRateB3()) - zsszjfd);
		fr.setRateB4Fw(ConstantLstBo.getDoubleValue(crtUser.getRateB4()) - zsszjfd);
		fr.setRateC1Fw(ConstantLstBo.getDoubleValue(crtUser.getRateC1()) - zsszjfd);
		fr.setRateC2Fw(ConstantLstBo.getDoubleValue(crtUser.getRateC2()) - zsszjfd);
		fr.setRateC3Fw(ConstantLstBo.getDoubleValue(crtUser.getRateC3()) - zsszjfd);
		fr.setRateC4Fw(ConstantLstBo.getDoubleValue(crtUser.getRateC4()) - zsszjfd);

		fr.setBh1700(crtUser.getMss().contains("1700") ? 1 : 0);
		fr.setBh1800(crtUser.getMss().contains("1800") ? 1 : 0);
		fr.setBh1900(crtUser.getMss().contains("1900") ? 1 : 0);

		return "zjhy";
	}

	public void setFr(ZjhyForm fr) {
		this.fr = fr;
	}

}
